﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Ferreteria.Forms
{
    public partial class FrmAgregarArtCompra : Form
    {
        private DisancoEntities context;
        public Articulos ArticuloSel;
        public int CantArtSel;
        public decimal PrecioCompra;
        bool modo;
       
        
        const string nombre_y_categoria = "Nombre o Categoria";
        const string nombre = "Nombre del Articulo";
        const string proveedor = "Proveedor";
        const string categoria = "Categoría";
        const string rubro = "Rubro";
        const string codigo = "Código";

        public FrmAgregarArtCompra()
        {
            InitializeComponent();
            dgvArticulos.AutoGenerateColumns = false;
            cmbCategorias.SelectedIndex = 0;
            CargarGrillaArtCompra();
           
        }

        public FrmAgregarArtCompra(bool Seguimiento)
        {
            InitializeComponent();
            modo = true;
            dgvArticulos.AutoGenerateColumns = false;
            cmbCategorias.SelectedIndex = 0;
            CargarGrillaArtCompra();
            numUpdCantidad.Visible = false;
            numUpdPrecio.Visible = false;
            lblCantidad.Visible = false;
            lblPrecio.Visible = false;
            numUpdPrecio.Value = 0;

        }


        private void CargarGrillaArtCompra()
        {
             try
            {
                context = new DisancoEntities(Ferreteria.Clases.Constantes.cadenaConexion);
                dgvArticulos.DataSource = context.VistaArticulos.Top("50");

            }
                        
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }


             dgvArticulos.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
             dgvArticulos.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
             dgvArticulos.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;

        }
        
        private void ArticuloBusqueda_Load(object sender, EventArgs e)
        {
            numUpdCantidad.Enabled = false;
            numUpdPrecio.Enabled = false;
        }

        private void txbCantidad_KeyPress(object sender, KeyPressEventArgs e)
        {
            Clases.Validar.ValidarNumeros(e);
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnBuscar_Click_1(object sender, EventArgs e)
        {

            try
            {
                context = new DisancoEntities(Ferreteria.Clases.Constantes.cadenaConexion);

                IEnumerable<VistaArticulos> query;
                string cadena = txbBuscar.Text;
                string tipo_busqueda = (string)cmbCategorias.SelectedItem;

                switch (tipo_busqueda)
                {
                    case proveedor:
                        query = (from vista in context.VistaArticulos
                                 join prov_art in context.ProveedoresxArticulos on vista.art_id equals prov_art.art_id
                                 where prov_art.Proveedores.prov_nombre.Contains(cadena)
                                 select vista).OrderBy(q => q.art_nombre);
                        break;
                    case categoria:
                        query = (from vista in context.VistaArticulos
                                 where vista.categ_nombre.Contains(cadena)
                                 select vista).OrderBy(q => q.art_nombre);
                        break;
                    case rubro:
                        query = (from vista in context.VistaArticulos
                                 where vista.rubro_nombre.Contains(cadena)
                                 select vista).OrderBy(q => q.art_nombre);
                        break;
                    case codigo:
                        query = (from vista in context.VistaArticulos
                                 where vista.art_codigo.Contains(txbBuscar.Text)
                                 select vista).OrderBy(q => q.art_nombre);
                        break;
                    case nombre:
                        query = (from vista in context.VistaArticulos
                                 where vista.art_nombre.Contains(txbBuscar.Text)
                                 select vista).OrderBy(q => q.art_nombre);
                        break;
                    default:
                        query = (from vista in context.VistaArticulos
                                 where vista.art_nombre.Contains(txbBuscar.Text) | vista.categ_nombre.Contains(cadena)
                                 select vista).OrderBy(q => q.art_nombre);
                        break;
                }

                dgvArticulos.DataSource = query;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }


       }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            cmbCategorias.SelectedIndex = 0;
            txbBuscar.Text = "";
            CargarGrillaArtCompra();
        }
      
        private void bttnAceptar_Click(object sender, EventArgs e)
        {
            if (modo == false)
            {
                decimal precio = (Convert.ToInt32(numUpdPrecio.Value));
                decimal cant = numUpdCantidad.Value;
                //if (precio == 0 | cant == 0)
                    if (cant == 0)
                {
                    DialogResult Message = MessageBox.Show("Debe Completar todos los Campos",
                                                                                      "Disanco Sanitarios", MessageBoxButtons.OK);
                    this.ArticuloSel = null;

                    numUpdPrecio.Value = 0;
                    numUpdCantidad.Value = 0;

                }
                else
                    this.Close();
            }
            else
                this.Close();
        }
  
        private void dgvArticulos_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            context = new DisancoEntities(Ferreteria.Clases.Constantes.cadenaConexion);
            int ArtId = Convert.ToInt32(dgvArticulos[0, dgvArticulos.CurrentRow.Index].Value.ToString());
            ArticuloSel = context.Articulos.FirstOrDefault(art => art.art_id.Equals(ArtId));
           
            dgvArticulos.CurrentRow.DefaultCellStyle.BackColor = Color.Green;
            dgvArticulos.CurrentRow.DefaultCellStyle.SelectionBackColor = Color.DarkGreen;

            if (modo == false)
            {
                numUpdCantidad.Enabled = true;
                numUpdPrecio.Enabled = true;
                numUpdCantidad.Focus();
            }
            
        }

        private void numUpdCantidad_ValueChanged(object sender, EventArgs e)
        {
            this.CantArtSel = Convert.ToInt32(numUpdCantidad.Value);

        }

        private void numUpdPrecio_ValueChanged(object sender, EventArgs e)
        {
            this.PrecioCompra = numUpdPrecio.Value;
        }

        

      
    }
}
